package com.cdn.nodes.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import com.cdn.common.core.annotation.Excel;

import java.io.Serializable;
import java.util.Date;

/**
 * 边缘集群，存储边缘集群的相关信息，包括配置和状态对象 edge_clusters
 * 
 * @author Cinzia
 * @date 2024-12-14
 */
@Data
public class EdgeClusters implements Serializable {
    private static final long serialVersionUID = 1L;

    /** 集群唯一标识符，自增主键 */
    private Long clusterId;

    /** 集群的名称，用于标识不同的集群 */
    @Excel(name = "集群的名称，用于标识不同的集群")
    private String clusterName;

    /** 集群中的节点总数 */
    @Excel(name = "集群中的节点总数")
    private Long nodeCount;

    /** 集群中当前在线的节点数 */
    @Excel(name = "集群中当前在线的节点数")
    private Long onlineNodeCount;

    /** 集群中部署的网站总数 */
    @Excel(name = "集群中部署的网站总数")
    private Long siteCount;

    /** 集群使用的DNS域名 */
    @Excel(name = "集群使用的DNS域名")
    private String dnsDomain;

    /** 节点安装的目录路径 */
    @Excel(name = "节点安装的目录路径")
    private String nodeInstallDirectory;

    /** 是否自动安装nftables，布尔值表示是否启用 */
    @Excel(name = "是否自动安装nftables，布尔值表示是否启用")
    private Integer autoInstallNftables;

    /** 是否自动调节系统参数，布尔值表示是否启用 */
    @Excel(name = "是否自动调节系统参数，布尔值表示是否启用")
    private Integer autoTuneSystemParams;

    /** 集群使用的DNS子域名 */
    @Excel(name = "集群使用的DNS子域名")
    private String dnsSubdomain;

    /** DNS解析记录的TTL（生存时间） */
    @Excel(name = "DNS解析记录的TTL", readConverterExp = "生存时间")
    private Long dnsRecordTtl;

    /** 创建者 */
    private String createdBy;

    /** 创建时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createdTime;

    /** 更新者 */
    private String updateBy;

    /** 更新时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date updateTime;

}
